﻿#include<iostream>
using namespace std;
//
int TestAuto()
{
	return 10;
}
int main()
{
	int a = 10;
	auto b = a;
	auto c = 'a';
	auto d = TestAuto();
	cout << typeid(b).name() << endl;
	cout << typeid(c).name() << endl;
	cout << typeid(d).name() << endl;
	//auto e; 无法通过编译，使用auto定义变量时必须对其进行初始化
	return 0;
//}
//
//#include <string>
//#include <map>
//void func(int a, int b)
//{
//	//
//}
//
//int main()
//{
//	void(*p1)(int, int) = func;//函数指针
//	//很复杂的变量
//	std::map<std::string, std::string> m{ { "apple", "苹果" }, { "orange",
//	"橙子" },
//	 {"pear","梨"} };
//	std::map<std::string, std::string>::iterator it = m.begin();
//	while (it != m.end())
//	{
//		//....
//	}
//	return 0;
//}
//
//typedef char* pstring;
//int main()
//{
//	const pstring p1=NULL; // 编译成功还是失败？
//	const pstring* p2; // 编译成功还是失败？
//	cout << p1 << endl;
//	return 0;
//}
//
//inline int Add(int a, int b)
//{
//	return a + b;
//}
//
//int main()
//{
//	int ret = Add(1, 2);
//	cout << ret << endl;
//	return 0;
//}
//
//int Add(int a, int b)
//{
//	return a + b;
//}
//
//int main()
//{
//	int ret = Add(1, 2);
//	cout << ret << endl;
//	return 0;
//}
//
////写出宏该怎么写呢？
////❌1 #define Add(int a,int b) return a+b;//写成函数
////❌2 #define Add(a,b)  a+b;//分号
////❌3 #define Add(a,b)  a+b//括号优先级
////❌4 #define Add(a,b) (a+b)
////#define Add(a,b) ((a)+(b))
//
//int main()
//{
//	2.if(Add(1,2))//if(1+2;)
//	3.Add(1,2)*3 //1+2*3
//	4.int x = 1, y = 2;
//	//Add(x | y, x & y);//(x|y+x&y)
//
//	int ret = Add(1, 2);
//	cout << ret << endl;
//	return 0;
//}
//
//
//int main()
//{
//	int i = 0;
//	int j = 0;
//	auto k = i;
//	auto p1 = &i;
//	auto* p2 = &i;
//	//auto p;
//	//auto* p = i;
//	auto& p1 = i;
//}
//
//
//auto f2()
//{
//	auto ret = 1;
//	return ret;
//}
//
//auto f1()
//{
//	auto x = f2();
//	return x;
//}
//
//auto TestAuto()
//{
//	auto a = f1();
//	return a;
//}
//
//
//int main()
//{
//	auto it = TestAuto();
//}
//
//
//void TestFor(int array[])
//{
//	for (auto& e : array)
//		cout << e << endl;
//}
//
//
//int main()
//{
//	int array[] = { 1, 2, 3, 4, 5 };
//
//	//for循环
//	for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
//		array[i] *= 2;
//
//	for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)
//		cout << *p << endl;
//
//	// C++11
//	// 依次取数组中值赋值给e，自动迭代，自动判断结束
//	//范围for
//	for (auto& e : array)
//	{
//		e *= 2;
//	}
//	cout << endl;
//
//	for (auto e : array)
//	{
//		cout << e << " ";
//	}
//	cout << endl;
//
//	return 0;
//}
//
//void TestFor()
//{
//	int array[] = { 1, 2, 3, 4, 5 };
//	for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
//		array[i] *= 2;
//	for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)
//		cout << *p << endl;
//}
//
//void TestFor()
//{
//	int array[] = { 1, 2, 3, 4, 5 };
//	for (auto& e : array)
//		e *= 2;
//	for (auto e : array)
//		cout << e << " ";
//}
//
//
//#pragma once
//
//#ifndef _CODE_BLOCK
//#define _CODE_BLOCK

// code

#endif// _CODE_BLOCK 
